

/**
 * 分页查询客户列表
 * @param {Object} data 请求参数
 * @param {string} [data.name] 客户姓名
 * @param {'男' | '女'} [data.gender] 性别
 * @param {number} [data.careLevel] 护理级别
 * @param {number} data.page 页码
 * @param {number} data.pageSize 每页条数
 * @returns {Promise}
 */
export const getCustomerList = (data) => {
  return uni.$uv.http.post('/caregiver/customer/getCustomerList', data, {
    custom: {
      loading: true,
      toast: true
    }
  });
};


/**
 * 查询客户全部项目服务
 * @param {number} customerId 客户 ID
 * @returns {Promise}
 */
// 方式二：用 request 并显式写 params
export const getAllProjectService = (customerId) => {
  return uni.$uv.http.request({
    url: '/caregiver/customerProjectService/getAllProjectService',
    method: 'GET',
    params: { customerId },
    custom: { loading: true, toast: true }
  });
};


/**
 * 分页查询护理记录
 * @param {Object} data 请求参数
 * @param {string} [data.name] 客户姓名
 * @param {'男' | '女'} [data.gender] 性别
 * @param {number} [data.careLevel] 护理级别
 * @param {string} [data.projectName] 护理项目名称
 * @param {number} data.page 页码
 * @param {number} data.pageSize 每页显示条数
 * @returns {Promise}
 */
export const getCareRecordList = (data) => {
  return uni.$uv.http.post(
    '/caregiver/customerProjectServiceRecord/getCareRecordList',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};


/**
 * 添加退住申请
 * @param {Object} data 请求参数
 * @param {number} [data.checkOutId]  申请记录 ID（编辑时使用，可不传）
 * @param {number} data.customerId    客户 ID
 * @param {string} data.customerName  客户姓名
 * @param {string} data.checkOutDate  退住时间，ISO 格式字符串，如 "2025-07-04T15:30:00"
 * @param {1|2|3} data.type           退住类型：1=正常退住，2=死亡退住，3=保留床位
 * @param {string} data.reason        退住原因
 * @param {number} [data.approvalStatus] 审批状态，新增时可不传（后端默认）
 * @returns {Promise}
 */
export const addCheckoutRecord = (data) => {
  return uni.$uv.http.post(
    '/client/checkoutRecord/addCheckoutRecord',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};


/**
 * 添加外出申请
 * @param {Object} data 请求参数
 * @param {number} [data.outingId]               申请记录 ID（编辑时用，可不传）
 * @param {number} data.customerId                客户 ID
 * @param {string} data.customerName              客户姓名
 * @param {string} data.reason                    外出事由
 * @param {string} data.outingDate                外出时间，ISO 格式字符串，如 "2025-07-04T15:30:00"
 * @param {string} data.expectedReturnDate        预计回院时间，ISO 格式字符串
 * @param {string} [data.actualReturnDate]        实际回院时间，ISO 格式字符串（可不传）
 * @param {string} data.withWho                   陪同人姓名
 * @param {string} data.relationship              与老人关系
 * @param {string} data.withWhoPhone              陪同人电话
 * @param {number} [data.approvalStatus]          审批状态，新增时可不传（后端默认）
 * @returns {Promise}
 */
export const addOutingRecord = (data) => {
  return uni.$uv.http.post(
    '/client/outingRecord/addOutingRecord',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};


/**
 * 分页查询退住申请记录
 * @param {Object} data 请求参数
 * @param {number} data.customerId      客户 ID（必填）
 * @param {number} [data.type]          退住类型（1=正常退住，2=死亡退住，3=保留床位）
 * @param {number} [data.approvalStatus] 审批状态（1=已提交，2=未通过，3=已通过，4=已取消）
 * @param {number} data.page            页码（必填）
 * @param {number} data.pageSize        每页条数（必填）
 * @returns {Promise}
 */
export const getCheckoutRecordList = (data) => {
  return uni.$uv.http.post(
    '/client/checkoutRecord/getCheckoutRecordList',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};


/**
 * 分页查询外出申请记录
 * @param {Object} data 请求参数
 * @param {number} data.customerId     客户 ID
 * @param {number} [data.approvalStatus] 审批状态（1=已提交，2=未通过，3=已通过，4=已取消）
 * @param {number} data.page           页码
 * @param {number} data.pageSize       每页条数
 * @returns {Promise}
 */
export const getOutingRecordList = (data) => {
  return uni.$uv.http.post(
    '/client/outingRecord/getOutingRecordList',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  )
}

/**
 * 添加护理记录
 * @param {Object} data 请求参数
 * @param {number} data.customerId       客户 ID（必填）
 * @param {string} data.customerName     客户姓名（必填）
 * @param {number} data.projectId        护理项目 ID（必填）
 * @param {string} data.projectName      护理项目名称（必填）
 * @param {string} data.careStartTime    护理开始时间，ISO 格式字符串，如 "2025-07-04T09:00:00"（必填）
 * @param {string} [data.careEndTime]    护理结束时间，ISO 格式字符串，如 "2025-07-04T10:00:00"
 * @param {string} [data.careDetails]    护理内容
 * @param {number} data.careCount        护理数量（必填）
 * @returns {Promise}
 */
export const addCareRecord = (data) => {
  return uni.$uv.http.post(
    '/caregiver/customerProjectServiceRecord/addCareRecord',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};



/**
 * 修改外出申请记录（登记回院时间或取消申请）
 * @param {Object} data 请求参数
 * @param {number} data.outingId             外出申请记录主键ID（必填）
 * @param {number} [data.customerId]         客户ID
 * @param {string} [data.customerName]       客户姓名
 * @param {string} [data.reason]             外出事由
 * @param {string} [data.outingDate]         外出时间，格式 "yyyy-MM-dd HH:mm:ss"
 * @param {string} [data.expectedReturnDate] 预计回院时间，格式 "yyyy-MM-dd HH:mm:ss"
 * @param {string} [data.actualReturnDate]   实际回院时间，格式 "yyyy-MM-dd HH:mm:ss"
 * @param {string} [data.withWho]            陪同人姓名
 * @param {string} [data.relationship]       与老人关系
 * @param {string} [data.withWhoPhone]       陪同人电话
 * @param {number} [data.approvalStatus]     审批状态（1=已提交，2=未通过，3=已通过，4=已取消）
 * @returns {Promise}
 */
export const updateOutingRecord = (data) => {
  return uni.$uv.http.post(
    '/client/outingRecord/updateOutingRecord',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};


/**
 * 修改外出申请记录（取消申请）
 * @param {Object} data 请求参数
 * @param {number} data.checkOutId        退住申请记录主键id（必填）
 * @param {number} [data.customerId]      客户id
 * @param {string} [data.customerName]    客户姓名
 * @param {string} [data.checkOutDate]    退住时间，ISO 格式字符串，如 "2025-07-04T15:30:00"
 * @param {1|2|3} [data.type]             退住类型：1=正常退住，2=死亡退住，3=保留床位
 * @param {string} [data.reason]          退住原因
 * @param {1|2|3|4} [data.approvalStatus] 审批状态：1=已提交，2=未通过，3=已通过，4=已取消
 * @returns {Promise}
 */
export const updateCheckoutRecord = (data) => {
  return uni.$uv.http.post(
    '/client/checkoutRecord/updateCheckoutRecord',
    data,
    {
      custom: {
        loading: true,
        toast: true
      }
    }
  );
};
